<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>多尺度Retinex图像增强 | GLIMMER小作坊的工具人</title>
    <meta name="description" content="时间太瘦，指尖太宽，且行且珍惜">
    <meta name="generator" content="VuePress 1.4.0">
    <link rel="icon" href="/vuepress/image.png">
  <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
  <script language="javascript" type="text/javascript" src="https://cdn.staticfile.org/jquery/1.7.2/jquery.min.js"></script>
  <script language="javascript" type="text/javascript" src="/js/MouseClickEffect.js"></script>
    
    <link rel="preload" href="/assets/css/0.styles.7c2ddbea.css" as="style"><link rel="preload" href="/assets/js/app.c1719760.js" as="script"><link rel="preload" href="/assets/js/5.882ae477.js" as="script"><link rel="preload" href="/assets/js/1.ad2741e3.js" as="script"><link rel="preload" href="/assets/js/2.b0f5b6a6.js" as="script"><link rel="preload" href="/assets/js/57.fa32ec0f.js" as="script"><link rel="preload" href="/assets/js/20.a8dae886.js" as="script"><link rel="prefetch" href="/assets/js/10.061af50f.js"><link rel="prefetch" href="/assets/js/100.85317b0d.js"><link rel="prefetch" href="/assets/js/101.8b7e5f17.js"><link rel="prefetch" href="/assets/js/102.724e3dd3.js"><link rel="prefetch" href="/assets/js/103.bfb1dc09.js"><link rel="prefetch" href="/assets/js/104.bc172956.js"><link rel="prefetch" href="/assets/js/105.dd66d16a.js"><link rel="prefetch" href="/assets/js/106.934eb59f.js"><link rel="prefetch" href="/assets/js/107.6f0b24bd.js"><link rel="prefetch" href="/assets/js/108.1e5abf7c.js"><link rel="prefetch" href="/assets/js/109.0b133847.js"><link rel="prefetch" href="/assets/js/11.c1bf9f21.js"><link rel="prefetch" href="/assets/js/110.4452fac4.js"><link rel="prefetch" href="/assets/js/111.8dbe7cfe.js"><link rel="prefetch" href="/assets/js/112.a2640d20.js"><link rel="prefetch" href="/assets/js/113.1776625c.js"><link rel="prefetch" href="/assets/js/114.b2f2dd05.js"><link rel="prefetch" href="/assets/js/115.4c5e3507.js"><link rel="prefetch" href="/assets/js/116.55246e31.js"><link rel="prefetch" href="/assets/js/117.73fbc87f.js"><link rel="prefetch" href="/assets/js/118.64a28e52.js"><link rel="prefetch" href="/assets/js/119.eb809170.js"><link rel="prefetch" href="/assets/js/12.50fe0adf.js"><link rel="prefetch" href="/assets/js/120.103458ff.js"><link rel="prefetch" href="/assets/js/121.ce43023f.js"><link rel="prefetch" href="/assets/js/122.9ccdb852.js"><link rel="prefetch" href="/assets/js/123.61815387.js"><link rel="prefetch" href="/assets/js/124.08e66733.js"><link rel="prefetch" href="/assets/js/125.8057f00b.js"><link rel="prefetch" href="/assets/js/126.31a70f61.js"><link rel="prefetch" href="/assets/js/127.3b67b02c.js"><link rel="prefetch" href="/assets/js/128.b577a571.js"><link rel="prefetch" href="/assets/js/129.9d910324.js"><link rel="prefetch" href="/assets/js/13.a866e204.js"><link rel="prefetch" href="/assets/js/130.8aca0d81.js"><link rel="prefetch" href="/assets/js/131.ea811b09.js"><link rel="prefetch" href="/assets/js/132.76bfb2dc.js"><link rel="prefetch" href="/assets/js/133.a2c35376.js"><link rel="prefetch" href="/assets/js/134.06ae0a00.js"><link rel="prefetch" href="/assets/js/14.78f9cc08.js"><link rel="prefetch" href="/assets/js/15.d4060631.js"><link rel="prefetch" href="/assets/js/16.3434d0b6.js"><link rel="prefetch" href="/assets/js/17.eda8d321.js"><link rel="prefetch" href="/assets/js/18.bdd63861.js"><link rel="prefetch" href="/assets/js/19.fbd1cf33.js"><link rel="prefetch" href="/assets/js/21.b6f04af7.js"><link rel="prefetch" href="/assets/js/22.f7430b65.js"><link rel="prefetch" href="/assets/js/23.9ac373d9.js"><link rel="prefetch" href="/assets/js/24.e22a443a.js"><link rel="prefetch" href="/assets/js/25.36f2adb4.js"><link rel="prefetch" href="/assets/js/26.5c85b2c3.js"><link rel="prefetch" href="/assets/js/27.51c2e282.js"><link rel="prefetch" href="/assets/js/28.3b5555cb.js"><link rel="prefetch" href="/assets/js/29.f290854b.js"><link rel="prefetch" href="/assets/js/30.6495d68c.js"><link rel="prefetch" href="/assets/js/31.d2291244.js"><link rel="prefetch" href="/assets/js/32.67cb6a0b.js"><link rel="prefetch" href="/assets/js/33.ebac8658.js"><link rel="prefetch" href="/assets/js/34.b4056456.js"><link rel="prefetch" href="/assets/js/35.2d35ec45.js"><link rel="prefetch" href="/assets/js/36.6da1ac84.js"><link rel="prefetch" href="/assets/js/37.8d970d48.js"><link rel="prefetch" href="/assets/js/38.94dfd07f.js"><link rel="prefetch" href="/assets/js/39.b0e22253.js"><link rel="prefetch" href="/assets/js/40.a0e6dc1e.js"><link rel="prefetch" href="/assets/js/41.67345a28.js"><link rel="prefetch" href="/assets/js/42.bae9c869.js"><link rel="prefetch" href="/assets/js/43.d62be483.js"><link rel="prefetch" href="/assets/js/44.2efe511e.js"><link rel="prefetch" href="/assets/js/45.e44be0c9.js"><link rel="prefetch" href="/assets/js/46.429897b0.js"><link rel="prefetch" href="/assets/js/47.026450f6.js"><link rel="prefetch" href="/assets/js/48.1b6ac3b2.js"><link rel="prefetch" href="/assets/js/49.0d5de7d1.js"><link rel="prefetch" href="/assets/js/50.bcaa0633.js"><link rel="prefetch" href="/assets/js/51.bbe1f24b.js"><link rel="prefetch" href="/assets/js/52.4d4d4941.js"><link rel="prefetch" href="/assets/js/53.b3074dbb.js"><link rel="prefetch" href="/assets/js/54.7b51af21.js"><link rel="prefetch" href="/assets/js/55.4880a3a5.js"><link rel="prefetch" href="/assets/js/56.0fbaa129.js"><link rel="prefetch" href="/assets/js/58.3ab779c1.js"><link rel="prefetch" href="/assets/js/59.f7416e71.js"><link rel="prefetch" href="/assets/js/6.cfda4e49.js"><link rel="prefetch" href="/assets/js/60.f997e769.js"><link rel="prefetch" href="/assets/js/61.b6ce2d29.js"><link rel="prefetch" href="/assets/js/62.484e896b.js"><link rel="prefetch" href="/assets/js/63.7436e7b5.js"><link rel="prefetch" href="/assets/js/64.0af3fb9d.js"><link rel="prefetch" href="/assets/js/65.cc6b1063.js"><link rel="prefetch" href="/assets/js/66.b226aae4.js"><link rel="prefetch" href="/assets/js/67.23fa8790.js"><link rel="prefetch" href="/assets/js/68.fb8897ef.js"><link rel="prefetch" href="/assets/js/69.ca44c95b.js"><link rel="prefetch" href="/assets/js/7.4ce0026c.js"><link rel="prefetch" href="/assets/js/70.dc65b621.js"><link rel="prefetch" href="/assets/js/71.627c41f8.js"><link rel="prefetch" href="/assets/js/72.30703fc7.js"><link rel="prefetch" href="/assets/js/73.48afc079.js"><link rel="prefetch" href="/assets/js/74.1181783d.js"><link rel="prefetch" href="/assets/js/75.c70d8736.js"><link rel="prefetch" href="/assets/js/76.a2c7c0b4.js"><link rel="prefetch" href="/assets/js/77.ba42676c.js"><link rel="prefetch" href="/assets/js/78.1bdfbac5.js"><link rel="prefetch" href="/assets/js/79.5343f801.js"><link rel="prefetch" href="/assets/js/8.94e9fcf2.js"><link rel="prefetch" href="/assets/js/80.aaff9fb9.js"><link rel="prefetch" href="/assets/js/81.7855e1f9.js"><link rel="prefetch" href="/assets/js/82.a522f853.js"><link rel="prefetch" href="/assets/js/83.d417cbce.js"><link rel="prefetch" href="/assets/js/84.aa477229.js"><link rel="prefetch" href="/assets/js/85.737ceb08.js"><link rel="prefetch" href="/assets/js/86.76914c69.js"><link rel="prefetch" href="/assets/js/87.ca65d02a.js"><link rel="prefetch" href="/assets/js/88.ecd6fbe0.js"><link rel="prefetch" href="/assets/js/89.8321befc.js"><link rel="prefetch" href="/assets/js/9.8972d482.js"><link rel="prefetch" href="/assets/js/90.3130a41f.js"><link rel="prefetch" href="/assets/js/91.662fea10.js"><link rel="prefetch" href="/assets/js/92.afebfc2f.js"><link rel="prefetch" href="/assets/js/93.93c4872e.js"><link rel="prefetch" href="/assets/js/94.1ef96f22.js"><link rel="prefetch" href="/assets/js/95.76a35ecf.js"><link rel="prefetch" href="/assets/js/96.afd7ca1a.js"><link rel="prefetch" href="/assets/js/97.e5ffb86e.js"><link rel="prefetch" href="/assets/js/98.7bb55507.js"><link rel="prefetch" href="/assets/js/99.4ded3fca.js"><link rel="prefetch" href="/assets/js/vendors~flowchart.b04affb9.js">
    <link rel="stylesheet" href="/assets/css/0.styles.7c2ddbea.css">
  </head>
  <body>
    <div id="app" data-server-rendered="true"><div><div class="theme-container" data-v-4d80cb8a><div data-v-4d80cb8a><div id="loader-wrapper" class="loading-wrapper" data-v-4b73742e data-v-4d80cb8a data-v-4d80cb8a><div class="loader-main" data-v-4b73742e><div data-v-4b73742e></div><div data-v-4b73742e></div><div data-v-4b73742e></div><div data-v-4b73742e></div></div> <!----> <!----></div> <div class="password-shadow password-wrapper-out" style="display:none;" data-v-0b619cf4 data-v-4d80cb8a data-v-4d80cb8a><h3 class="title" style="display:none;" data-v-0b619cf4 data-v-0b619cf4>GLIMMER小作坊的工具人</h3> <!----> <label id="box" class="inputBox" style="display:none;" data-v-0b619cf4 data-v-0b619cf4><input type="password" value="" data-v-0b619cf4> <span data-v-0b619cf4>Konck! Knock!</span> <button data-v-0b619cf4>OK</button></label> <div class="footer" style="display:none;" data-v-0b619cf4 data-v-0b619cf4><span data-v-0b619cf4><i class="iconfont reco-theme" data-v-0b619cf4></i> <a target="blank" href="https://vuepress-theme-reco.recoluan.com" data-v-0b619cf4>vuePress-theme-reco</a></span> <span data-v-0b619cf4><i class="iconfont reco-copyright" data-v-0b619cf4></i> <a data-v-0b619cf4><span data-v-0b619cf4>LJoson</span>
            
          <span data-v-0b619cf4>2020 - </span>
          2025
        </a></span></div></div> <div class="hide" data-v-4d80cb8a><header class="navbar" data-v-4d80cb8a><div title="导航" class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><!----> <span class="site-name">GLIMMER小作坊的工具人</span></a> <div class="links"><div class="color-picker"><a class="color-button"><i class="iconfont reco-color"></i></a> <div class="color-picker-menu" style="display:none;"><div class="mode-options"><h4 class="title">Choose mode</h4> <ul class="color-mode-options"><li class="dark">dark</li><li class="auto active">auto</li><li class="light">light</li></ul></div></div></div> <div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/index.html" class="nav-link"><i class="iconfont reco-home"></i>
  Home
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-category"></i>
      分类
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/categories/AI及机器人等/" class="nav-link"><i class="iconfont undefined"></i>
  AI及机器人等
</a></li><li class="dropdown-item"><!----> <a href="/categories/算法等/" class="nav-link"><i class="iconfont undefined"></i>
  算法等
</a></li><li class="dropdown-item"><!----> <a href="/categories/计算机技术等/" class="nav-link"><i class="iconfont undefined"></i>
  计算机技术等
</a></li><li class="dropdown-item"><!----> <a href="/categories/电子设计等/" class="nav-link"><i class="iconfont undefined"></i>
  电子设计等
</a></li><li class="dropdown-item"><!----> <a href="/categories/杂谈/" class="nav-link"><i class="iconfont undefined"></i>
  杂谈
</a></li><li class="dropdown-item"><!----> <a href="/categories/游戏设计等/" class="nav-link"><i class="iconfont undefined"></i>
  游戏设计等
</a></li><li class="dropdown-item"><!----> <a href="/categories/笔记等/" class="nav-link"><i class="iconfont undefined"></i>
  笔记等
</a></li></ul></div></div><div class="nav-item"><a href="/tag/" class="nav-link"><i class="iconfont reco-tag"></i>
  标签
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-document"></i>
      我的
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><h4>Projects🎈</h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/projects/github.html" class="nav-link"><i class="iconfont undefined"></i>
  Project on github
</a></li></ul></li><li class="dropdown-item"><h4>Station🎈</h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://github.com/LJoson" target="_blank" rel="noopener noreferrer" class="nav-link external"><i class="iconfont undefined"></i>
  GitHub
  <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li class="dropdown-subitem"><a href="https://blog.csdn.net/qq_43743037" target="_blank" rel="noopener noreferrer" class="nav-link external"><i class="iconfont undefined"></i>
  CSDN
  <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul></div></div><div class="nav-item"><a href="/timeLine/index.html" class="nav-link"><i class="iconfont reco-date"></i>
  时间线
</a></div><div class="nav-item"><a href="https://ljoson.github.io/arXiv_daily" target="_blank" rel="noopener noreferrer" class="nav-link external"><i class="iconfont reco-document"></i>
  每日论文摘要
  <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="nav-item"><a href="/about/aboutme.html" class="nav-link"><i class="iconfont reco-message"></i>
  关于坊主
</a></div> <!----></nav></div></header> <div class="sidebar-mask" data-v-4d80cb8a></div> <aside class="sidebar" data-v-4d80cb8a><div class="personal-info-wrapper" data-v-79645776><img src="/vuepress/Headimage.jpg" alt="author-avatar" class="personal-img" data-v-79645776> <h3 class="name" data-v-79645776>
    LJoson
  </h3> <div class="num" data-v-79645776><div data-v-79645776><h3 data-v-79645776>105</h3> <h6 data-v-79645776>文章</h6></div> <div data-v-79645776><h3 data-v-79645776>49</h3> <h6 data-v-79645776>标签</h6></div></div> <hr data-v-79645776></div> <nav class="nav-links"><div class="nav-item"><a href="/index.html" class="nav-link"><i class="iconfont reco-home"></i>
  Home
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-category"></i>
      分类
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/categories/AI及机器人等/" class="nav-link"><i class="iconfont undefined"></i>
  AI及机器人等
</a></li><li class="dropdown-item"><!----> <a href="/categories/算法等/" class="nav-link"><i class="iconfont undefined"></i>
  算法等
</a></li><li class="dropdown-item"><!----> <a href="/categories/计算机技术等/" class="nav-link"><i class="iconfont undefined"></i>
  计算机技术等
</a></li><li class="dropdown-item"><!----> <a href="/categories/电子设计等/" class="nav-link"><i class="iconfont undefined"></i>
  电子设计等
</a></li><li class="dropdown-item"><!----> <a href="/categories/杂谈/" class="nav-link"><i class="iconfont undefined"></i>
  杂谈
</a></li><li class="dropdown-item"><!----> <a href="/categories/游戏设计等/" class="nav-link"><i class="iconfont undefined"></i>
  游戏设计等
</a></li><li class="dropdown-item"><!----> <a href="/categories/笔记等/" class="nav-link"><i class="iconfont undefined"></i>
  笔记等
</a></li></ul></div></div><div class="nav-item"><a href="/tag/" class="nav-link"><i class="iconfont reco-tag"></i>
  标签
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-document"></i>
      我的
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><h4>Projects🎈</h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="/projects/github.html" class="nav-link"><i class="iconfont undefined"></i>
  Project on github
</a></li></ul></li><li class="dropdown-item"><h4>Station🎈</h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://github.com/LJoson" target="_blank" rel="noopener noreferrer" class="nav-link external"><i class="iconfont undefined"></i>
  GitHub
  <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li><li class="dropdown-subitem"><a href="https://blog.csdn.net/qq_43743037" target="_blank" rel="noopener noreferrer" class="nav-link external"><i class="iconfont undefined"></i>
  CSDN
  <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul></li></ul></div></div><div class="nav-item"><a href="/timeLine/index.html" class="nav-link"><i class="iconfont reco-date"></i>
  时间线
</a></div><div class="nav-item"><a href="https://ljoson.github.io/arXiv_daily" target="_blank" rel="noopener noreferrer" class="nav-link external"><i class="iconfont reco-document"></i>
  每日论文摘要
  <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="nav-item"><a href="/about/aboutme.html" class="nav-link"><i class="iconfont reco-message"></i>
  关于坊主
</a></div> <!----></nav>  <ul class="sidebar-links"><li><a href="/views/" class="sidebar-link">概览</a></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>AI及机器人等</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>算法等</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/views/algorithm/opencv/clahe.html" class="sidebar-link">限制对比度自适应直方图均衡化(Contrast Limited Adaptive Hitogram Equalization)</a></li><li><a href="/views/algorithm/opencv/ImageProcessing.html" class="sidebar-link">Image Processing</a></li><li><a href="/views/algorithm/opencv/otsu.html" class="sidebar-link">Image Processing 100 Questions之图像二值化</a></li><li><a href="/views/algorithm/opencv/retinex.html" class="active sidebar-link">多尺度Retinex图像增强</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/views/algorithm/opencv/retinex.html#retinex算法分析" class="sidebar-link">Retinex算法分析</a></li><li class="sidebar-sub-header"><a href="/views/algorithm/opencv/retinex.html#retinex（ssr）" class="sidebar-link">Retinex（SSR）</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/views/algorithm/opencv/retinex.html#ssr算法实现步骤" class="sidebar-link">ssr算法实现步骤</a></li></ul></li><li class="sidebar-sub-header"><a href="/views/algorithm/opencv/retinex.html#多尺度retinex（msr）" class="sidebar-link">多尺度Retinex（MSR）</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/views/algorithm/opencv/retinex.html#msr-多尺度retienx增强算法-的实现步骤：" class="sidebar-link">MSR(多尺度Retienx增强算法)的实现步骤：</a></li></ul></li><li class="sidebar-sub-header"><a href="/views/algorithm/opencv/retinex.html#带色彩恢复的多尺度retinex（msrcr）" class="sidebar-link">带色彩恢复的多尺度Retinex（MSRCR）</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/views/algorithm/opencv/retinex.html#msrcr-带色彩恢复的多尺度retinex算法-的实现步骤：" class="sidebar-link">MSRCR(带色彩恢复的多尺度Retinex算法)的实现步骤：</a></li></ul></li><li class="sidebar-sub-header"><a href="/views/algorithm/opencv/retinex.html#msrcp" class="sidebar-link">MSRCP</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/views/algorithm/opencv/retinex.html#实现步骤" class="sidebar-link">实现步骤</a></li></ul></li></ul></li><li><a href="/views/algorithm/opencv/env.html" class="sidebar-link">linux下无痛安装opencv</a></li><li><a href="/views/algorithm/opencv/cornerdetection00.html" class="sidebar-link">图像处理之cornerdection(角点检测)</a></li><li><a href="/views/algorithm/slam/n0.html" class="sidebar-link">slam技术综述</a></li><li><a href="/views/algorithm/slam/vslam_rs.html" class="sidebar-link">D435i相机开发笔记-固件更新工具 (rs-fw-update)</a></li><li><a href="/views/algorithm/slam/velyodyne.html" class="sidebar-link">Velodyne的16线激光雷达使用以及可视化</a></li><li><a href="/views/algorithm/slam/aloam.html" class="sidebar-link">Advanced implementation of LOAM</a></li><li><a href="/views/algorithm/leetcode/leetcode1.html" class="sidebar-link">Leetcode刷题专题（一）</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>计算机技术等</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>硬件及运动控制等</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>杂谈</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>小游戏设计等</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>笔记等</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <div class="password-shadow password-wrapper-in" style="display:none;" data-v-0b619cf4 data-v-4d80cb8a><h3 class="title" style="display:none;" data-v-0b619cf4 data-v-0b619cf4>多尺度Retinex图像增强</h3> <!----> <label id="box" class="inputBox" style="display:none;" data-v-0b619cf4 data-v-0b619cf4><input type="password" value="" data-v-0b619cf4> <span data-v-0b619cf4>Konck! Knock!</span> <button data-v-0b619cf4>OK</button></label> <div class="footer" style="display:none;" data-v-0b619cf4 data-v-0b619cf4><span data-v-0b619cf4><i class="iconfont reco-theme" data-v-0b619cf4></i> <a target="blank" href="https://vuepress-theme-reco.recoluan.com" data-v-0b619cf4>vuePress-theme-reco</a></span> <span data-v-0b619cf4><i class="iconfont reco-copyright" data-v-0b619cf4></i> <a data-v-0b619cf4><span data-v-0b619cf4>LJoson</span>
            
          <span data-v-0b619cf4>2020 - </span>
          2025
        </a></span></div></div> <div data-v-4d80cb8a><main class="page"><!----> <div class="page-title" style="display:none;"><h1>多尺度Retinex图像增强</h1> <hr> <div data-v-09556aba><i class="iconfont reco-account" data-v-09556aba><span data-v-09556aba>LJoson</span></i> <i class="iconfont reco-date" data-v-09556aba><span data-v-09556aba>2020-06-30 20:41:12</span></i> <i class="iconfont reco-eye" data-v-09556aba><span id="/views/algorithm/opencv/retinex.html" data-flag-title="Your Article Title" class="leancloud-visitors" data-v-09556aba><a class="leancloud-visitors-count" style="font-size:.9rem;font-weight:normal;color:#999;"></a></span></i> <i class="iconfont reco-tag tags" data-v-09556aba><span class="tag-item" data-v-09556aba>
      图像处理
    </span></i></div></div> <div class="theme-reco-content content__default" style="display:none;"><p></p><div class="table-of-contents"><ul><li><a href="#retinex算法分析">Retinex算法分析</a></li><li><a href="#retinex（ssr）">Retinex（SSR）</a><ul><li><a href="#ssr算法实现步骤">ssr算法实现步骤</a></li></ul></li><li><a href="#多尺度retinex（msr）">多尺度Retinex（MSR）</a><ul><li><a href="#msr-多尺度retienx增强算法-的实现步骤：">MSR(多尺度Retienx增强算法)的实现步骤：</a></li></ul></li><li><a href="#带色彩恢复的多尺度retinex（msrcr）">带色彩恢复的多尺度Retinex（MSRCR）</a><ul><li><a href="#msrcr-带色彩恢复的多尺度retinex算法-的实现步骤：">MSRCR(带色彩恢复的多尺度Retinex算法)的实现步骤：</a></li></ul></li><li><a href="#msrcp">MSRCP</a><ul><li><a href="#实现步骤">实现步骤</a></li></ul></li></ul></div><p></p> <p><a href="https://github.com/LJoson/Imageprocess/tree/master/Retinex" target="_blank" rel="noopener noreferrer">工程代码<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p> <h1 id="引言"><a href="#引言" class="header-anchor">#</a> 引言</h1> <p>Land在1963年首次提出的这种 Retinex模型是以下面这几个基础理论为出发点的：首先，现实中的各种物体本身中是不存在颜色的，这是经过生物大脑皮层神经系统的处理后产生的主观印象，我们的视觉知觉是光线的照射与物体反射性质相互作用后出现的最终状态。其次，人眼中所获取到的所有颜色信息其实是由三种特定频率的波长决定的，色彩分别表现为红色、绿色和蓝色(即三原色)，这三种颜色可以构成可观察到的所有其他颜色。这也就是说Retinex算法的主要理论基础是光学三原色理论和颜色恒常性理论。相机拍摄图像与人眼直接观察场景的过程非常类似，所以研究者们希望利用颜色恒常性理论来处理图像，以达到像大脑处理复杂场景光照条件变化时能够得到的良好效果。和人眼不同，相机获取图像时场景的光照变化会对图像质量产生较大的影响，当场景中的光源照射照不充足时会引起具体细节在图像上的缺失，致使对比度下降等影响图片质量的问题。如果能够像大脑皮层处理场景信息一样消除光照变化带来的这些问题，就能够让图像更加真实生动的展现出场景信息。Retinex理论正是Land依据这种出发点，并基于颜色恒常性提出的。<br>
Retinex算法理论有两个经典算法：基于路径的Retinex以及基于中心环绕Retinex。由于基于中心围绕的Retinex图像增强算法的运算不会过于繁琐，又能够提供较好的处理效果，so这种算法成为了是目前备受关注和研究较为深入的一类Retinex算法。中心围绕Retine算法的中心思想是：像素的亮度的通过相关邻域之间的像素值加权进行估计的，其权值是由中心围绕函数计算确定的。在基于高斯核计算的中心围绕Retinex算法中，从最初非常经典且简练的单尺度Retinex（Single Scale Retinex，SSR）到后来的多尺度Retinex（Multi Scale Retinex，MSR）和带有色彩恢复的多尺度Retinex（Multi Scale Retinex with Color Restoration，MSRCR），到现在诸多研究人员根据色彩恢复还提出了许多其他的改进算法。</p> <h2 id="retinex算法分析"><a href="#retinex算法分析" class="header-anchor">#</a> Retinex算法分析</h2> <p>Retinex理论模型中，图像I(x,y)被分为了反射分量R(x,y)和入射分量L(x,y)两部分，分别表示物体的本质特征的信息和代表入射光照的亮度图像，图像中的光照分量决定了一幅图像光信号最大值和最小值的区间大小。原理模型如下图所示：</p> <p><img src="/img/algorithm/retinex/1.png" alt=""></p> <p>从模型中可以看出，图像是通过两部分相互作用完成的，入射光线照射物体后物体所反射的信号进入人眼后，得到人类所看到的图像，即可以将这种图像形成的过程看作是光照分量与物体反射分量相乘，用公式可以表示为:</p> <p><img src="https://img-blog.csdnimg.cn/20190418103243208.png" alt=""></p> <p>通常将上式取对数，将乘法转换为加法，就可以得到图像的各分量之间发关系：</p> <p><img src="https://img-blog.csdnimg.cn/20190418103337945.png" alt=""></p> <p>因此，Retinex的图像增强方法可以根据估计图像中光照分量的计算方式的不同分为很多种，尽管很多改进算法在各个环节可能会有不同的方法，但算法的实质还是大体如下面的流程图：</p> <p><img src="https://img-blog.csdnimg.cn/20190418103943447.png" alt=""></p> <h2 id="retinex（ssr）"><a href="#retinex（ssr）" class="header-anchor">#</a> Retinex（SSR）</h2> <p>单尺度Retinex算法处理图像的过程和人眼获取场景信息的视觉成像过程非常类似。根据Retinex理论的假设可知：人眼所观察到的物体颜色并不是物体本身就存在的，而是由物体不同波长的反射能力来决定的。SSR实现的算法流程为：首先对图像进行数据准备，将其分解为三个通道分别对其进行处理，接着准备用于滤波的合适尺度大小取值的中心环绕函数，用该函数对各个通道的信息进行高斯滤波，得到图像中的光照分量，然后在对数域中减去光照分量，得到表示物体实际反射性质的分量，最后将三通道数据进行合并就得到了单尺度Retinex增强图像。其具体表达式如下：</p> <p><img src="https://img-blog.csdnimg.cn/20190418104222972.png" alt=""></p> <p>其中， *表示卷积运算， i表示第 i个颜色通道，I(x,y) 是原始图像，r(x,y)、R(x,y)表示反射分量，G(x,y) 为高斯环绕函数，具体表达式为：</p> <p><img src="https://img-blog.csdnimg.cn/2019041810430079.png" alt=""></p> <p>其中δ为高斯环绕函数的尺度参数(即尺度值)，这个参数决定了中心围绕函数进行卷积运算时的邻域大小，即高斯滤波中的标准差的大小。这个参数直接影响着SSR处理效果的好坏，δ的取值越小，SSR的动态压缩能力就越强，但是色彩保真度相应变差，会在局部出现色彩失真的现象；反之，δ越大的话，SSR的颜色保真度就会越高，动态范围压缩相应减弱。SSR算法一般都是在动态范围压缩和色彩恢复能力之间进行取舍。而最佳的高斯函数应是：</p> <p><img src="/img/algorithm/retinex/2.jpg" alt=""></p> <p>虽然SSR在图像增强方面的应用非常广泛，优势明显，但也存在一些不足之处：利用单尺度Retinex算法对图像进行处理以后，图像整体的亮度相比于原图有大幅度提高，对于原图整体亮度非常低而导致细节缺失的图像来说，这种处理对图像增强来说非常有效，但是对于不是这么极端的图像而言，处理之后的图像整体就会显得过于明亮。另外这种明亮程度的过高也会影响到图像的对比度，会出现整体偏白甚至偏灰的情况。Retinex算法首先是将分量转换到对数域中进行运算的，这种变换虽然在局部和人眼视觉的光线知觉十分相近，但是范围有限，也会出现一些失真的现象。比如：</p> <p><img src="/img/algorithm/retinex/3.jpg" alt=""></p> <p><img src="/img/algorithm/retinex/4.jpg" alt=""></p> <h3 id="ssr算法实现步骤"><a href="#ssr算法实现步骤" class="header-anchor">#</a> ssr算法实现步骤</h3> <p>单尺度Retinex算法的实现步骤：</p> <ul><li>将图像分解为RGB三通道分量，并进行对数变换，以及统计相关图像信息（信息熵，均值，方差），进行评估</li> <li>构建高斯环绕函数，将各通道的灰度图像分别与高斯环绕函数卷积，得到三通道的照度估计图像</li> <li>在对数域用原图像减去照度估计分量，改变高斯卷积尺度参数δ的大小，查看不同尺度值得到反射分量不同。</li> <li>将得到的反射分量的结果线性拉伸或者指数变换，转化为图像输出的数据类型。</li> <li>将得到的三通道的反射分量图像合并为一幅图像得到SSR增强图像。</li></ul> <h2 id="多尺度retinex（msr）"><a href="#多尺度retinex（msr）" class="header-anchor">#</a> 多尺度Retinex（MSR）</h2> <p>SSR算法在动态范围压缩和色调恢复的两种效果中，只能以牺牲一种功能为代价来改进另一个，因此Jobson等一批研究者们针对单尺度Retinex模型中存在的不足，提出了将不同尺度下的增强结果线性地组合在一起，充分将局部信息和整体信息考虑进去的多尺度Retinex算法。这种算法的主要思想就是结合几种不同的尺度的中心围绕函数通过加权平均以后来估计光照分量。MSR算法可以产生同时拥有良好动态范围压缩、色彩稳定性以及良好色调恢复的单一输出图像。MSR算法的公式为：</p> <p><img src="https://img-blog.csdnimg.cn/20190418104808637.png" alt=""></p> <p>其中， N表示尺度个数， N=1时即为SSR，为保证MSR算法同时具有高尺度和低尺度所具有的优点，一般将N的取值选为3，用三个不同尺度的高斯滤波器对原始图像进行滤波处理时效果较好。 Wк是第k个尺度在进行加权时的加权系数，需要满足</p> <p><img src="https://img-blog.csdnimg.cn/20190418104904595.png" alt=""></p> <p>通常取W1=W2=W3=1/3 ，经过实验发现，当取平均时，能适用于大量的低照度图像，且运算简单。最后Fk(x,y)是在第 k 个尺度上的高斯滤波函数，即</p> <p><img src="https://img-blog.csdnimg.cn/20190418105003523.png" alt=""></p> <p>通过实验证明了多尺度的 Retinex在颜色保持和细节突出等方面比单尺度的SSR要好很多，但是一般情况下尺度数选择为3，所以一次 MSR 等同于三次的 SSR ，而三个尺度值比例在15：80：250比较合适。</p> <h3 id="msr-多尺度retienx增强算法-的实现步骤："><a href="#msr-多尺度retienx增强算法-的实现步骤：" class="header-anchor">#</a> MSR(多尺度Retienx增强算法)的实现步骤：</h3> <p>MSR的实现步骤中除了第二步中用三个尺度参数分别构成三个高斯环绕函数，以及三个高斯环绕函数分别与三通道进行卷积，并加权平均得到各通道照度分量外，其他步骤与SSR算法步骤相同</p> <h2 id="带色彩恢复的多尺度retinex（msrcr）"><a href="#带色彩恢复的多尺度retinex（msrcr）" class="header-anchor">#</a> 带色彩恢复的多尺度Retinex（MSRCR）</h2> <p>由于单尺度Retinex既具有动态范围压缩的能力，也可以实现大面积的色调恢复，但二者不能同时实现。Jobson等人为了弥补MSR算法的缺陷提出了带有色彩恢复的多尺度Retinex算法（MSRCR）。这种算法将两种Retinex结合了起来，即低尺度retinex的动态范围压缩，以及高尺度retinex的色调恢复。这种色彩恢复对于克服MSR在包含违反灰度世界的场景的色彩恢复时的问题是必要的。它合并了所有的必要因素，以相当自动化和相当简单的计算来逼近人类视觉的性能。MSRCR的公式表示如下：</p> <p><img src="https://img-blog.csdnimg.cn/20190418161344649.png" alt=""></p> <p>其中</p> <p><img src="https://img-blog.csdnimg.cn/20190418161222359.png" alt=""></p> <p>指的是第i个色彩通道的色彩恢复函数（CRF），用来调节三个通道颜色在图像中所占的比例。Jobson等人通过几种不同的色彩恢复函数在实验场景上进行处理，函数包含线性和非线性两种，通过对比实验发现能够提供最佳整体色彩还原的函数形式为</p> <p><img src="https://img-blog.csdnimg.cn/20190418161222359.png" alt=""></p> <p>其中，β是增益常数，α的取值大小控制着非线性的强度。其中β=46，α=125时为经验参数，MSRCR可以提供必要的颜色恢复，从而把相对较暗区域而无法观察到的信息图像细节展现出来，消除了MSR输出中明显的颜色失真和灰色区域。可以为大多数图像提供良好的效果。比如</p> <p><img src="/img/algorithm/retinex/5.jpg" alt=""></p> <p><img src="/img/algorithm/retinex/6.jpg" alt=""></p> <h3 id="msrcr-带色彩恢复的多尺度retinex算法-的实现步骤："><a href="#msrcr-带色彩恢复的多尺度retinex算法-的实现步骤：" class="header-anchor">#</a> MSRCR(带色彩恢复的多尺度Retinex算法)的实现步骤：</h3> <ul><li>按照MSR算法实现步骤得到三个通道的MSR增强分量。</li> <li>按照式2.23的Ci(x,y)得到各通道的色彩恢复函数CRF。</li> <li>将色彩恢复函数CRF与MSR增强函数相乘，并按照式2.24的ri得到最终三通道的图像增强分量。</li> <li>将三个图像增强分量合并得到MSRCR增强图像。</li></ul> <h2 id="msrcp"><a href="#msrcp" class="header-anchor">#</a> MSRCP</h2> <p>对于一些原始图像HUE较为合理的图，如果用经典的MSRCR算法，会导致处理后的图容易偏色，上述论文提出了对图像的Intensity数据进行Retinex处理，然后再把数据根据原始的RGB的比例映射到每个通道，这样就能在保留原始颜色分布的基础上增强图像，文章中称其为MSRCP。</p> <h3 id="实现步骤"><a href="#实现步骤" class="header-anchor">#</a> 实现步骤</h3> <p><img src="https://img-blog.csdn.net/20180722161553568?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x6MDQ5OQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" alt=""></p> <div class="custom-block tip"><p class="custom-block-title">参考资料</p> <p>http://www.ipol.im/pub/art/2014/107/?utm_source=doi</p> <p>https://ieeexplore.ieee.org/document/6113573</p> <p>https://blog.csdn.net/lilingyu520/article/details/46755767?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-16.nonecase&amp;depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-16.nonecase</p> <p>https://blog.csdn.net/lz0499/article/details/81154937?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-5.channel_param&amp;depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-5.channel_param</p> <p>https://blog.csdn.net/ajianyingxiaoqinghan/article/details/71435098</p> <p>https://blog.csdn.net/PPLLO_o/article/details/89375445</p> <p>https://blog.csdn.net/Gordon_Wei/article/details/102173309?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.nonecase&amp;depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.nonecase</p> <p>https://blog.csdn.net/yayan01/article/details/50129391</p> <p>https://blog.csdn.net/bluecol/article/details/45675615?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-7.channel_param&amp;depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-7.channel_param</p> <p>https://github.com/ShadowCoo/The-Retinex-algorithm-based-Lab-Color-Space</p></div></div> <footer class="page-edit" style="display:none;"><!----> <div class="last-updated"><span class="prefix">最后更新时间: </span> <span class="time">2023/01/13, 20:39:48</span></div></footer> <!----> <!----> <div class="article-list" data-v-61e7bf3a><div class="article-title" data-v-61e7bf3a><a href="/timeline/" class="iconfont icon-shizhong" data-v-61e7bf3a>最近更新</a></div> <div class="article-wrapper" data-v-61e7bf3a><dl data-v-61e7bf3a><dd data-v-61e7bf3a>01</dd> <dt data-v-61e7bf3a><a href="/views/AI/ebot/ebot1.html" data-v-61e7bf3a><div data-v-61e7bf3a>技术随笔《二》：人形机器人模仿学习与传统控制方法概述</div></a> <span data-v-61e7bf3a>04-12</span></dt></dl><dl data-v-61e7bf3a><dd data-v-61e7bf3a>02</dd> <dt data-v-61e7bf3a><a href="/views/AI/ebot/ebot0.html" data-v-61e7bf3a><div data-v-61e7bf3a>技术随笔《一》：人形机器人控制算法概述</div></a> <span data-v-61e7bf3a>04-10</span></dt></dl><dl data-v-61e7bf3a><dd data-v-61e7bf3a>03</dd> <dt data-v-61e7bf3a><a href="/views/AI/coder/" data-v-61e7bf3a><div data-v-61e7bf3a>编解码器详解</div></a> <span data-v-61e7bf3a>12-26</span></dt></dl></div> <div data-v-61e7bf3a><a href="/timeline/" class="article-more" data-v-61e7bf3a>更多文章 &gt;</a></div></div></main> <!----> <div class="comments-wrapper" data-v-4d80cb8a><div class="valine-wrapper"><div id="valine"></div></div></div></div></div></div></div></div><div class="global-ui"><div class="back-to-ceiling" style="right:1rem;bottom:6rem;width:2.5rem;height:2.5rem;border-radius:.25rem;line-height:2.5rem;display:none;" data-v-a81d141e data-v-a81d141e><svg t="1574745035067" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5404" class="icon" data-v-a81d141e><path d="M526.60727968 10.90185116a27.675 27.675 0 0 0-29.21455937 0c-131.36607665 82.28402758-218.69155461 228.01873535-218.69155402 394.07834331a462.20625001 462.20625001 0 0 0 5.36959153 69.94390903c1.00431239 6.55289093-0.34802892 13.13561351-3.76865779 18.80351572-32.63518765 54.11355614-51.75690182 118.55860487-51.7569018 187.94566865a371.06718723 371.06718723 0 0 0 11.50484808 91.98906777c6.53300375 25.50556257 41.68394495 28.14064038 52.69160883 4.22606766 17.37162448-37.73630017 42.14135425-72.50938081 72.80769204-103.21549295 2.18761121 3.04276886 4.15646224 6.24463696 6.40373557 9.22774369a1871.4375 1871.4375 0 0 0 140.04691725 5.34970492 1866.36093723 1866.36093723 0 0 0 140.04691723-5.34970492c2.24727335-2.98310674 4.21612437-6.18497483 6.3937923-9.2178004 30.66633723 30.70611158 55.4360664 65.4791928 72.80769147 103.21549355 11.00766384 23.91457269 46.15860503 21.27949489 52.69160879-4.22606768a371.15156223 371.15156223 0 0 0 11.514792-91.99901164c0-69.36717486-19.13165746-133.82216804-51.75690182-187.92578088-3.42062944-5.66790279-4.76302748-12.26056868-3.76865837-18.80351632a462.20625001 462.20625001 0 0 0 5.36959269-69.943909c-0.00994388-166.08943902-87.32547796-311.81420293-218.6915546-394.09823051zM605.93803103 357.87693858a93.93749974 93.93749974 0 1 1-187.89594924 6.1e-7 93.93749974 93.93749974 0 0 1 187.89594924-6.1e-7z" p-id="5405" data-v-a81d141e></path><path d="M429.50777625 765.63860547C429.50777625 803.39355007 466.44236686 1000.39046097 512.00932183 1000.39046097c45.56695499 0 82.4922232-197.00623328 82.5015456-234.7518555 0-37.75494459-36.9345906-68.35043303-82.4922232-68.34111062-45.57627738-0.00932239-82.52019037 30.59548842-82.51086798 68.34111062z" p-id="5406" data-v-a81d141e></path></svg></div><!----><div data-v-4a66ed39><div class="DetailsOpenFlag" style="right:1rem;bottom:9rem;width:2.5rem;height:2.5rem;border-radius:.25rem;line-height:2.5rem;font-size:14px;font-weight:500;display:none;" data-v-4a66ed39>
 展开

</div></div><div class="kanbanniang" data-v-3c101199><div class="banniang-container" style="display:;" data-v-3c101199><div class="messageBox" style="right:68px;bottom:190px;display:none;" data-v-3c101199>
      欢迎来到 GLIMMER小作坊的工具人
    </div> <div class="operation" style="right:90px;bottom:40px;display:;" data-v-3c101199><i class="kbnfont kbn-ban-home ban-home" data-v-3c101199></i> <i class="kbnfont kbn-ban-message message" data-v-3c101199></i> <i class="kbnfont kbn-ban-close close" data-v-3c101199></i> <a target="_blank" href="https://vuepress-theme-reco.recoluan.com/views/plugins/kanbanniang.html" data-v-3c101199><i class="kbnfont kbn-ban-info info" data-v-3c101199></i></a> <i class="kbnfont kbn-ban-theme skin" style="display:;" data-v-3c101199></i></div> <canvas id="banniang" width="150" height="220" class="live2d" style="right:90px;bottom:-20px;opacity:0.9;" data-v-3c101199></canvas></div> <div class="showBanNiang" style="display:none;" data-v-3c101199>
    看板娘
  </div></div></div></div>
    <script src="/assets/js/app.c1719760.js" defer></script><script src="/assets/js/5.882ae477.js" defer></script><script src="/assets/js/1.ad2741e3.js" defer></script><script src="/assets/js/2.b0f5b6a6.js" defer></script><script src="/assets/js/57.fa32ec0f.js" defer></script><script src="/assets/js/20.a8dae886.js" defer></script>
  </body>
</html>
